package com.kaizeli.website.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 员工响应VO类
 */
@Data
public class EmployeeVO {
    
    @Schema(description = "员工主键ID")
    private Long id;
    
    @Schema(description = "项目编号")
    private String projectCode;
    
    @Schema(description = "客户单位")
    private String clientUnit;
    
    @Schema(description = "所在部门")
    private String department;
    
    @Schema(description = "所在团队")
    private String team;
    
    @Schema(description = "岗位名称")
    private String position;
    
    @Schema(description = "员工类型(正式/实习/见习)")
    private String employeeType;
    
    @Schema(description = "员工姓名")
    private String name;
    
    @Schema(description = "性别(男/女)")
    private String gender;
    
    @Schema(description = "婚姻状况(已婚/未婚)")
    private String maritalStatus;
    
    @Schema(description = "籍贯")
    private String nativePlace;
    
    @Schema(description = "民族")
    private String ethnicity;
    
    @Schema(description = "政治面貌")
    private String politicalStatus;
    
    @Schema(description = "身份证号")
    private String idCard;
    
    @Schema(description = "生日")
    private LocalDate birthday;
    
    @Schema(description = "户籍地址")
    private String registeredAddress;
    
    @Schema(description = "现居住地址")
    private String currentAddress;
    
    @Schema(description = "联系电话")
    private String phone;
    
    @Schema(description = "微信号")
    private String wechat;
    
    @Schema(description = "邮箱")
    private String email;
    
    @Schema(description = "员工编号")
    private String employeeCode;
    
    @Schema(description = "入职时间")
    private LocalDate hireDate;
    
    @Schema(description = "转正时间")
    private LocalDate confirmationDate;
    
    @Schema(description = "试用状态(试用期/已转正)")
    private String probation;
    
    @Schema(description = "员工状态（1在职，0离职）")
    private Integer status;
    
    @Schema(description = "员工状态描述")
    private String statusDesc;
    
    @Schema(description = "学历")
    private String education;
    
    @Schema(description = "所学专业")
    private String major;
    
    @Schema(description = "毕业院校")
    private String university;
    
    @Schema(description = "毕业时间")
    private LocalDate graduationDate;
    
    @Schema(description = "技能证书")
    private String skillCertificates;
    
    @Schema(description = "基本工资")
    private BigDecimal baseSalary;
    
    @Schema(description = "小时工资率（用于计算人工费用）")
    private BigDecimal hourlyRate;
    
    @Schema(description = "紧急联系人")
    private String emergencyContact;
    
    @Schema(description = "紧急联系电话")
    private String emergencyPhone;
    
    @Schema(description = "银行卡号")
    private String bankAccount;
    
    @Schema(description = "开户行")
    private String bankName;
    
    @Schema(description = "是否已续签合同")
    private String contractRenewed;
    
    @Schema(description = "续签合同次数")
    private Integer renewalCount;
    
    @Schema(description = "最新合同开始时间")
    private LocalDate latestContractStart;
    
    @Schema(description = "最新合同结束时间")
    private LocalDate latestContractEnd;
    
    @Schema(description = "签合同公司")
    private String contractCompany;
    
    @Schema(description = "入职登记表")
    private String entryForm;
    
    @Schema(description = "身份证复印件")
    private String idCardCopy;
    
    @Schema(description = "学历毕业证书")
    private String diploma;
    
    @Schema(description = "学位证书")
    private String degreeCertificate;
    
    @Schema(description = "银行卡复印件")
    private String bankCardCopy;
    
    @Schema(description = "简历")
    private String resume;
    
    @Schema(description = "离职证明")
    private String leavingCertificate;
    
    @Schema(description = "三甲体检报告")
    private String medicalReport;
    
    @Schema(description = "保密协议")
    private String confidentialityAgreement;
    
    @Schema(description = "员工培训协议")
    private String trainingAgreement;
    
    @Schema(description = "规章制度确认书")
    private String rulesConfirmation;
    
    @Schema(description = "员工行为准则")
    private String codeOfConduct;
    
    @Schema(description = "备注")
    private String remarks;
    
    @Schema(description = "创建时间")
    private String createTime;
    
    @Schema(description = "更新时间")
    private String updateTime;
    
    @Schema(description = "创建用户")
    private String createUserId;
    
    @Schema(description = "更新用户")
    private String updateUserId;
}